﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Web;

/// <summary>
/// Descripción breve de modeloMostrarHorario
/// contiene los metodos para hacer el llenado de los objetos necesarios para mostrar la informacion de horarios en pantalla
/// </summary>
public class modeloMostrarHorario
{
    classMostrarHorario oHorarioITI;
    MySqlClase mysql = new MySqlClase();
   

    
	public modeloMostrarHorario()
	{
	}
    /// <summary>
    /// metodo que regresa uan lista de los grupos de ITI de la carrera
    /// </summary>
    /// <returns></returns>
    private ArrayList ITI() {
        string query = "select grupo from horario where grupo like '%ITI%'and CURRENT_DATE() BETWEEN horario.finicio and horario.ffin  group by grupo;";
        ArrayList ITI = new ArrayList();

        //func
        if (mysql.AbrirConexion())
        {
            mysql.Consultar(query);

            while (mysql.DatosConsulta.Read())
            {
                ITI.Add(mysql.DatosConsulta.GetString(0));
            }
        }
        mysql.CerrarConexion();
        return ITI;
    }

    /// <summary>
    /// regresa un arreglo con los datos de los grupos con especialidad
    /// </summary>
    /// <returns></returns>
    private ArrayList TICEscpecalidad() {
        string query = "select grupo from horario where grupo like '%TICM%' or grupo like '%TICR%' or grupo like '%TICS%' group by (grupo) order by (grupo);";
        
        ArrayList noITI = new ArrayList();

        //func
        if (mysql.AbrirConexion())
        {
            mysql.Consultar(query);

            while (mysql.DatosConsulta.Read())
            {
                noITI.Add(mysql.DatosConsulta.GetString(0));
            }
        }
        mysql.CerrarConexion();
        return noITI;
    }

    /// <summary>
    /// Metodo que regresa una lista de los grupos de tronco común
    /// </summary>
    /// <returns></returns>
    private ArrayList TICTroncoComun()
    {
        string query = "select grupo from horario where grupo like'TIC_-_%' and dia=5 and CURRENT_DATE() BETWEEN horario.finicio and horario.ffin  group by grupo;";

        ArrayList noITI = new ArrayList();

        //func
        if (mysql.AbrirConexion())
        {
            mysql.Consultar(query);

            while (mysql.DatosConsulta.Read())
            {
                noITI.Add(mysql.DatosConsulta.GetString(0));
            }
        }
        mysql.CerrarConexion();
        return noITI;
    }

    #region Lenado de listas de horarios de ITI, TIC especialidad y TIC tronco comun

    /// <summary>
    /// Regresa una lista con los horarios de los grupos de ITI que haya, ordenados por grupo y por hora
    /// primero: el horario de ITI8-1 ordenado por hora
    /// segundo: horario de ITI8-2 ordenado por hora
    /// tercero:horario de ITI8-3 ordenado por hora
    /// 
    /// </summary>
    /// <returns></returns>
    public ArrayList horarioITI(int dia) {
        ArrayList iti = this.ITI();

        ArrayList listaITI = new ArrayList();

        for (int i = 0; i < iti.Count; i++) //por cada elemento de la lista de iti se hara esto ...
        {
            string sql = @"select idhorario,h.grupo,p.idprof, p.profesor,a.idasignaturas, a.asignaturas, hora from horario h, asignaturas a, profesores p 
                            where grupo='" + iti[i] + "' and dia=" + dia + " and p.idprof = h.id_prof and a.idasignaturas = h.id_asig and CURRENT_DATE() BETWEEN h.finicio and h.ffin group by (hora);";
            
            if (mysql.AbrirConexion())
            {
                mysql.Consultar(sql);
                while (mysql.DatosConsulta.Read())
                {
                    //llenar objeto de la clase horarioITI

                    oHorarioITI = new classMostrarHorario();
                    oHorarioITI.Id_horario = mysql.DatosConsulta.GetInt32(0);
                    oHorarioITI.Grupo = mysql.DatosConsulta.GetString(1);
                    oHorarioITI.Id_prof = mysql.DatosConsulta.GetInt32(2);
                    oHorarioITI.Profesor = mysql.DatosConsulta.GetString(3);
                    oHorarioITI.Id_asig = mysql.DatosConsulta.GetInt32(4);
                    oHorarioITI.Asignatura = mysql.DatosConsulta.GetString(5);
                    oHorarioITI.Hora = mysql.DatosConsulta.GetInt32(6);

                    //agrego a la lista el objeto horario ITI
                    listaITI.Add(oHorarioITI);
                }
                mysql.CerrarConexion();

            }
        }
        return listaITI;
    }

    /// <summary>
    /// Regresa una lista con los horarios de los grupos de TIC con especialidad que haya, ordenados por grupo y por hora
    /// (MCE, RT y SI)
    /// </summary>
    /// <returns></returns>
    public ArrayList listaTICEspecialidad(int dia)
    {
        ArrayList iti = TICEscpecalidad();

        ArrayList listaEspecialidad = new ArrayList();

        for (int i = 0; i < iti.Count; i++) //por cada elemento de la lista de iti se hara esto ...
        {
            string sql = @"select idhorario,h.grupo,p.idprof, p.profesor,a.idasignaturas, a.asignaturas, hora from horario h, asignaturas a, profesores p 
                            where grupo='" + iti[i] + "' and dia=" + dia + " and p.idprof = h.id_prof and a.idasignaturas = h.id_asig /*and CURRENT_DATE() BETWEEN h.finicio and h.ffin*/ group by (hora);";

            if (mysql.AbrirConexion())
            {
                mysql.Consultar(sql);
                while (mysql.DatosConsulta.Read())
                {
                    oHorarioITI = new classMostrarHorario();
                    oHorarioITI.Id_horario = mysql.DatosConsulta.GetInt32(0);
                    oHorarioITI.Grupo = mysql.DatosConsulta.GetString(1);
                    oHorarioITI.Id_prof = mysql.DatosConsulta.GetInt32(2);
                    oHorarioITI.Profesor = mysql.DatosConsulta.GetString(3);
                    oHorarioITI.Id_asig = mysql.DatosConsulta.GetInt32(4);
                    oHorarioITI.Asignatura = mysql.DatosConsulta.GetString(5);
                    oHorarioITI.Hora = mysql.DatosConsulta.GetInt32(6);

                    //agrego a la lista el objeto horario ITI
                    listaEspecialidad.Add(oHorarioITI);
                }
                mysql.CerrarConexion();

            }
        }
        return listaEspecialidad;
    }

    /// <summary>
    /// Regresa una lista con los horarios de los grupos de TIC que haya, ordenados por grupo y por hora
    /// sólo los TIC
    /// </summary>
    /// <returns></returns>
    public ArrayList listaTICTroncoComun(int dia)
    {
        ArrayList iti = TICTroncoComun();

        ArrayList listatronco = new ArrayList();

        for (int i = 0; i < iti.Count; i++) //por cada elemento de la lista de iti se hara esto ...
        {
            string sql = @"select idhorario,h.grupo,p.idprof, p.profesor,a.idasignaturas, a.asignaturas, hora from horario h, asignaturas a, profesores p 
                            where grupo='" + iti[i] + "' and dia=" + dia + " and p.idprof = h.id_prof and a.idasignaturas = h.id_asig and CURRENT_DATE() BETWEEN h.finicio and h.ffin group by (hora);";

            if (mysql.AbrirConexion())
            {
                mysql.Consultar(sql);
                while (mysql.DatosConsulta.Read())
                {
                    //llenar objeto de la clase horarioITI

                    oHorarioITI = new classMostrarHorario();
                    oHorarioITI.Id_horario = mysql.DatosConsulta.GetInt32(0);
                    oHorarioITI.Grupo = mysql.DatosConsulta.GetString(1);
                    oHorarioITI.Id_prof = mysql.DatosConsulta.GetInt32(2);
                    oHorarioITI.Profesor = mysql.DatosConsulta.GetString(3);
                    oHorarioITI.Id_asig = mysql.DatosConsulta.GetInt32(4);
                    oHorarioITI.Asignatura = mysql.DatosConsulta.GetString(5);
                    oHorarioITI.Hora = mysql.DatosConsulta.GetInt32(6);

                    //agrego a la lista el objeto horario ITI
                    listatronco.Add(oHorarioITI);
                }
                mysql.CerrarConexion();

            }
        }
        return listatronco;
    }
    
    #endregion 
}